package com.ruoyi.mall.service;

import com.ruoyi.mall.domain.MallOrderDetail;
import com.ruoyi.mall.wechat.WechatPayDto;

import java.util.List;


public interface IWechatService
{

    /**
     * 接收商品订单明细，生成定单支付信息
     * @param lstMallOrderDetal
     * @return
     */
    WechatPayDto orderPay(List<MallOrderDetail> lstMallOrderDetal);

//    /**
//     * js API 支付
//     * @param param 预支付参数
//     * @return 小程序唤起支付（金额已经确定了 输入密码的页面）
//     */
//    WechatPayDto jsPay(WechatPayReqParam param);
//
//    /**
//     * 支付的回调
//     * 微信支付文档：2.3、微信支付回调处理机制说明
//     * 微信支付接收到商户的应答后，会根据应答结果做对应的逻辑处理：
//     * 若商户应答回调接收成功，微信支付将不再重复发送该回调通知。若因网络或其他原因，商户收到了重复的回调通知，请按正常业务流程进行处理并应答。
//     * 若商户应答回调接收失败，或超时(5s)未应答时，微信支付会按照（15s/15s/30s/3m/10m/20m/30m/30m/30m/60m/3h/3h/3h/6h/6h）的频次重复发送回调通知，直至微信支付接收到商户应答成功，或达到最大发送次数（15次）
//     * 所以 以防万一 最好在处理业务之前判断一下 是否已经处理了 如果已经处理了 就不在处理 直接响应微信就好了
//     *
//     */
//    ResponseEntity.BodyBuilder payNotify(HttpServletRequest request, HttpServletResponse response);
//
//    /**
//     * 申请退款
//     * @param param param
//     * @return string
//     */
//    String payRefund(WechatPayRefundReqParam param);
//
//    /**
//     * 退款的回调
//     * 微信支付文档：2.3、微信支付回调处理机制说明
//     * 微信支付接收到商户的应答后，会根据应答结果做对应的逻辑处理：
//     * 若商户应答回调接收成功，微信支付将不再重复发送该回调通知。若因网络或其他原因，商户收到了重复的回调通知，请按正常业务流程进行处理并应答。
//     * 若商户应答回调接收失败，或超时(5s)未应答时，微信支付会按照（15s/15s/30s/3m/10m/20m/30m/30m/30m/60m/3h/3h/3h/6h/6h）的频次重复发送回调通知，直至微信支付接收到商户应答成功，或达到最大发送次数（15次）
//     * 所以 以防万一 最好在处理业务之前判断一下 是否已经处理了 如果已经出力了 就不在处理 直接响应微信就好了
//     */
//    String refundNotify(HttpServletRequest request, HttpServletResponse response);
}
